{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "> 原文地址 [www.cnblogs.com](https://www.cnblogs.com/meandme/p/10069227.html)\n",
    "\n",
    "1    [什么是 OPC UA](http://opcfoundation.cn/)\n",
    "-------------------------------------------\n",
    "\n",
    "为了应对标准化和跨平台的趋势，为了更好的推广 OPC，OPC 基金会近些年在之前 OPC 成功应用的基础上推出了一个新的 OPC 标准 - OPC UA。**OPC UA 接口协议包含了之前的 A&E, DA,OPC XML DA or HDA**，只使用一个地址空间就能访问之前所有的对象，而且不受 WINDOWS 平台限制，因为它是从传输层 Scoket 以上来定义的，这点后面会提到，导致了灵活性和安全性比之前的 OPC 都提升了。\n",
    "\n",
    "2    OPC UA 的优势\n",
    "---------------\n",
    "\n",
    "1）一个通用接口集成了之前所有 OPC 的特性和信息，A&E, DA,OPC XML DA or HDA\n",
    "\n",
    "2）更加开放，平台无关性，WINDOWS,Linux 都能兼容\n",
    "\n",
    "3）扩展了对象类型，支持更复杂的数据类型比如变量，方法和事件\n",
    "\n",
    "4）在协议和应用层集成了安全功能，更加安全\n",
    "\n",
    "5）易于配置和使用\n",
    "\n",
    "核心的区别是因为 OPC 和 OPC UA 协议使用的 TCP 层不一样，如下：\n",
    "\n",
    "OPC 是基于 DOM/COM 上，应用层最顶层；OPC UA 是基于 TCP IP scoket 传输层.\n",
    "\n",
    "![][img-0] 　　\n",
    "\n",
    "其他一些区别：\n",
    "\n",
    "OPC 虽然通过配置 COM/DOM 来提供数据加密和签名功能，配置防火墙，用户权限来让数据访问变得更加安全，但是会增加额外的工作量，尤其是对非 IT 的工程师来说；对于 OPC UA，数据加密和签名，防火墙等都是默认的功能。比如基于 DOM 的 OPC 使用的**动态端口分配**，端口不固定，让防火墙难以确定，而 OPC UA 的端口都是唯一的，比如 SINUMERIK 840D 是 PORT 4840，SIMATIC S7 是 PORT 4845。DOM/COM 也可以生成不同级别的事件日志，但日志内容不够详细，只会提供 “谁连接上服务器” 这种，而对于 OPC UA 来说都是默认的功能，生成的日志内容更全面。\n",
    "\n",
    "3    OPC UA\n",
    "-----------\n",
    "\n",
    "OPC 统一架构（OPC Unified Architecture）是 OPC 基金会（OPC Foundation）创建的新技术，更加安全、可靠、中性（与供应商无关），**为制造现场到生产计划或企业资源计划（ERP）系统**传输原始数据和预处理信息。使用 OPC UA 技术，所有需要的信息可随时随地到达每个授权应用和每个授权人员。\n",
    "\n",
    " ![][img-1]\n",
    "\n",
    "OPC UA 独立于制造商，应用可以用他通信，开发者可以用不同编程语言对他开发，不同的操作系统上可以对他支持。OPC UA 弥补了已有 OPC 的不足，增加了诸如平台独立、可伸缩性、高可用性和因特网服务等重要特性。\n",
    "\n",
    "OPC UA 不再基于分布式组件对象模型（DCOM），而是以**面向服务的架构（SOA）为基础**。OPC UA 因此可以连接更多的设备。\n",
    "\n",
    "今天，OPC UA 已经成为连接企业级计算机与嵌入式自动化组件的桥梁 - 独立于微软、 UNIX 或其他操作系统。\n",
    "\n",
    "4     OPC 统一架构 - 标准化通信\n",
    "----------------------\n",
    "\n",
    "通过因特网和通过防火墙的标准化通信 - OPC UA 使用一种优化的基于 TCP 的二进制协议完成数据交换；另外支持 Web 服务和 HTTP。现在允许在防火墙中打开一个端口，集成的安保机制确保了通过因特网也能安全通信。\n",
    "\n",
    "防止非授权的数据访问 - OPC UA 技术使用一种成熟安保理念，防止非授权访问和过程数据损坏，以及由于不小心地操作带来的错误。OPC UA 安保理念基于 World Wide Web 标准，通过**用户鉴权**、**签名**和**加密传输**等项目来实现。\n",
    "\n",
    "数据安全性和可靠性 - OPC UA 使用可靠的通信机制、可配置的超时、自动错误检查和自动恢复等机制，定义一种可靠坚固的架构。对 OPC UA 客户机与服务器之间的物理连接可以进行监视，随时发现通信中的问题。OPC UA 具有冗余特性，可以在服务器和客户机应用中实施，防止数据的丢失，实现高可用性系统。\n",
    "\n",
    "在简化接口方面进行了很多改进 - 新 OPC UA 在所有平台上的通信更快速、更安全和更灵活。\n",
    "\n",
    "平台独立和可伸缩性 -  由于使用了基于面向服务的技术，OPC UA 具有平台独立的属性，可以实施全新的、节省成本的自动化理念。嵌入式现场设备、过程控制系统（DCS）、可编程逻辑控制器（PLC）、网关或者操作员面板（HMI）可以依靠 OPC UA 服务器，直接连到操作系统，诸如嵌入的 Windows、Linux、VxWorks、QNX、RTOS 或者其他系统。使用一台独立的 Windows PC 用做 OPC 服务器，提供对非 Windows 设备数据访问的模式今天已经淘汰。当然，OPC UA 组件也可以在 Unix 操作系统的信息技术（IT）系统中使用，诸如：Solaris、HPUX、AIX、Linux 等，可以是企业资源计划（ERP）系统，可以是生产计划（MES）和监控软件（SCADA），还可以是电子商务应用。OPC UA 的组件功能是可以是伸缩的：小到一个嵌入式设备的瘦应用，大到公司级别大型计算机的数据管理系统。\n",
    "\n",
    "简单一致 - OPC UA 定义了一种集成的地址空间和信息模型，可以显示过程数据、报警、历史数据以及完成程序调用。信息项被定义成不同类型的对象，彼此之间可以建立关系。 在此基础上，OPC UA 支持使用复杂数据结构。这使 OPC UA 可以完整地描述复杂过程和系统。\n",
    "\n",
    "对传统的三种不同类型 OPC 服务器的访问 - 数据访问（DA）、报警和事件（AE）、历史数据访问（HDA） - 比如，要获得一个温度传感器的当前值、一个高温度事件和温度的历史平均值，要依次使用不同的命令执行。而使用 OPC UA，仅用一个组件就非常容易地完成了。配置和工程的时间也因此可以大大缩短。\n",
    "\n",
    "性能强劲 - 通过自身的不断发展，依靠基于 TCP UA 二进制协议，使用高效的数据编码，OPC UA 提供了非常高效的数据传输，满足了更高性能的要求。\n",
    "\n",
    "更多的应用选项 - OPC UA 技术的广泛适用性使全新的垂直集成理念能够完全实施。对 OPC UA 组件进行串级，从车间现场设备到制造执行系统（MES）或企业资源计划（ERP）系统，信息能够安全和可靠地传输。在现场设备级的嵌入式 UA 服务器，在自动化级的 UA 组件，在企业级 ERP 系统中集成的 UA 客户机，可以进行串级连接。各自的 UA 组件可以在地理上是分布的，而且容易使用防火墙让彼此分开。\n",
    "\n",
    "![][img-2] \n",
    "\n",
    "为把这种信息模型作为一种推广的技术，OPC UA 与其他标准化组织合作，希望把 UA 服务提供给各行各业使用。今天，OPC 基金会已经与不同的标准化组织进行了合作，诸如：PLC 开放组织（PLCopen）、国际自动化协会（ISA）和电子设备描述语言（EDDL）合作团队（ECT）建立合作标准。\n",
    "\n",
    "5 　OPC UA - 平台独立，结构伸缩，保护投资\n",
    "--------------------------\n",
    "\n",
    "OPC UA 将在一个比较长的时期里替换传统的 OPC。在这个过渡期中，基于 DCOM 的 OPC 产品会与 UA 产品共存。OPC 基金会的迁移战略可以让传统的 OPC 和 OPC UA 产品很好结合。用这种方式，已经安装使用的几百万套、上千种传统的 OPC 产品可以与新的 OPC UA 产品共同使用。这为用户提供了优势，因为他们能够从不同的制造商 - 传统的 OPC 和 OPC UA 厂家，选用任何需要的产品。\n",
    "\n",
    " ![][img-3]\n",
    "\n",
    "开放\n",
    "\n",
    "- 超过 450 个成员；\n",
    "\n",
    "- 平台中性；\n",
    "\n",
    "- 应用普遍；\n",
    "\n",
    "- 所有连接。\n",
    "\n",
    "特色\n",
    "\n",
    "- 工业标准；\n",
    "\n",
    "- 独立于制造商；\n",
    "\n",
    "- 互操作能力；\n",
    "\n",
    "- 可靠性。\n",
    "\n",
    "协同\n",
    "\n",
    "- 设备集成；\n",
    "\n",
    "- IEC 61131-3 / PLCopen；\n",
    "\n",
    "- 分析设备集成；\n",
    "\n",
    "- 企业 - 控制系统集成（ISA-95），批处理（ISA-88）；\n",
    "\n",
    "- 智能电网；\n",
    "\n",
    "- 现场设备集成；\n",
    "\n",
    "- EDDL 与现场设备技术（FDT）。\n",
    "\n",
    "安全\n",
    "\n",
    "- X509 认证\n",
    "\n",
    "- OpenSSL 加密\n",
    "\n",
    "- 用户名 / 密码\n",
    "\n",
    "- 每种属性的访问权限\n",
    "\n",
    "合作伙伴\n",
    "\n",
    "- PLCopen\n",
    "\n",
    "- ISA\n",
    "\n",
    "- MIMOSA\n",
    "\n",
    "- FDT\n",
    "\n",
    "- ECT\n",
    "\n",
    "[img-0]:data:application/xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPEVycm9yPgogIDxDb2RlPk5vU3VjaEtleTwvQ29kZT4KICA8TWVzc2FnZT5UaGUgc3BlY2lmaWVkIGtleSBkb2VzIG5vdCBleGlzdC48L01lc3NhZ2U+CiAgPFJlcXVlc3RJZD41RUU5RDk5NkU0OTkwMzMwMzQ0RUFCM0E8L1JlcXVlc3RJZD4KICA8SG9zdElkPmltZzIwMTguY25ibG9ncy5jb208L0hvc3RJZD4KICA8S2V5PmJsb2cvMTI5OTc0Ni8yMDE4MTIvMTI5OTc0Ni0yMDE4MTIwNTA5NDkzMzkwOC0xNTQxNTkxMjk0LnBuZ2h0dHBzOi8vaW1nMjAxOC5jbmJsb2dzLmNvbS9ibG9nLzEyOTk3NDYvMjAxODEyLzEyOTk3NDYtMjAxODEyMDUwOTQ5NDI3NDktMTE3NjE2NjQyOS5wbmc8L0tleT4KPC9FcnJvcj4K\n",
    "\n",
    "[img-1]:\n",
    "\n",
    "[img-2]:\n",
    "\n",
    "[img-3]:"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  },
  "varInspector": {
   "cols": {
    "lenName": 16,
    "lenType": 16,
    "lenVar": 40
   },
   "kernels_config": {
    "python": {
     "delete_cmd_postfix": "",
     "delete_cmd_prefix": "del ",
     "library": "var_list.py",
     "varRefreshCmd": "print(var_dic_list())"
    },
    "r": {
     "delete_cmd_postfix": ") ",
     "delete_cmd_prefix": "rm(",
     "library": "var_list.r",
     "varRefreshCmd": "cat(var_dic_list()) "
    }
   },
   "types_to_exclude": [
    "module",
    "function",
    "builtin_function_or_method",
    "instance",
    "_Feature"
   ],
   "window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
